package com.tedu.api.io;

import com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector;
import org.junit.Test;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.logging.Filter;

/**
 * listFiles(接口：Filter)     重载
 * 作用：按照“指定规则”获取对应文件/文件夹
 *
 * FileFilter接口---专门给listFiles方法提供：过滤文件夹或者文件【指定规则】
 * accept()从每个File文件中判断，拿到【具体逻辑】的文件夹
 *
 * 需求： 获取 API 项目下 所有子项【文件和文件夹】，获取src文件
 *   指定规则：验证是s开头就是src
 *
 *   作业2：FileFilter接口按照匿名内部类 方式 实现，功能如上需求！
 *   接口：FileFilter ff=new FileFilter(){ accept() }
 */

public class FilterAPI {
    //主方法：./路径指定根级
    public static void main(String[] args) throws IOException {
        //1.创建File文件类：获取当前API 文件夹 路径：./API
        File file=new File("."+ File.separator+"API");
       //匿名内部类：替换子类继承FileFilter
     /**   FileFilter my=new FileFilter() {
            public boolean accept(File pathname) {
                return pathname.getName().startsWith("s");
            }
        };*/
       //2.获取文件夹下的所有“子项：文件夹下包括所有的文件和文件夹”

        //3.打印子项下所有的名字   增强for
      /* for(int i=0;i<subs.length;i++){
           System.out.println("所有的文件和文件夹的名："+subs[i].getName());
       }*/
        //增强for for(接收类型  f:){}
        for(File f:new File("."+File.separator+"API").listFiles((pathname)->{return pathname.getName().startsWith("s");})){
            System.out.println("遍历后过滤完成："+f);
        }
    }
    //单元测试：./路径指定父级
   /** @Test
    public void test01() throws IOException {
        //创建File文件类：获取当前API 文件夹 路径：./
            File file=new File("."+ File.separator);
            System.out.println(file.getCanonicalPath());
    }*/
}
//创建实现类--实现--FileFilter接口--对象创建
  //accept(File pathname)
    //传入参数：File pathname--获取所有需要过滤文件
    //作用：添加过滤条件，将获取所有需要过滤文件，
    // 逐一过滤，【条件：规则--开发者指定】
    // 条件满足返回true，输出，条件不满足反之


